/*
 * Copyright [2022] [MaxKey of copyright http://www.maxkey.top]
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import format from 'date-fns/format';

import { Apps } from './Apps';

export class AppsTokenBasedDetails extends Apps {
  redirectUri!: String;
  tokenType!: String;
  cookieName!: String;
  algorithm!: String;
  algorithmKey!: String;
  expires!: Number;

  constructor() {
    super();
    this.expires = 300;
    this.tokenType = 'POST';
    this.cookieName = 'ltpa_token';
    this.algorithm = 'AES';
  }

  override init(data: any): void {
    Object.assign(this, data);
    super.init(data);
    if (this.status == 1) {
      this.switch_status = true;
    } else {
      this.switch_status = false;
    }

    this.select_userPropertys = [''];
    let userPropertysArray: String[] = `${this.userPropertys},`.split(',');
    for (let i = 0; i < userPropertysArray.length; i++) {
      this.select_userPropertys.push(`${userPropertysArray[i]}`);
    }
  }

  override trans(): void {
    if (this.switch_status) {
      this.status = 1;
    } else {
      this.status = 0;
    }

    this.userPropertys = '';

    for (let i = 0; i < this.select_userPropertys.length; i++) {
      if (this.select_userPropertys[i] != '') {
        if (this.userPropertys === '') {
          this.userPropertys = this.select_userPropertys[i];
        } else {
          this.userPropertys = `${this.userPropertys},${this.select_userPropertys[i]}`;
        }
      }
    }
  }
}